3.3 疑似コードによる命令動作の記述
本文書では一部の命令の動作を疑似コードで記述してある。
疑似コードの文法を厳密には定義しないが以下のルールに従って記述する。
MEMはMN-Core 2ボードの各階層のメモリ要素をまとめた構造体である
LongWordは長語(64ビットワード)、ShortWordは単語(32ビットワード)、HalfWrodは半語(16ビットワード)の型を表す
forは通常のfor文だが、次のルールに従う
:によるインデックス表記は始端がインクルーシブ、終端がエクスクルーシブである。forcycle=0:4と書いたらcycleは0,1,2,3を取る
for cycleとあるときcycleの値それぞれでPE命令の各サイクルで起きることを示す
forall group,forall l2b,forall l1b,forall mab,forall peはそれぞれfor group = 0:4,for l2b = 0:2, ...などの略記である
forallの直接のネストはforall chip,l2b,l1bなどと略記する
次の関数を用いる
refer_pemem(mem, cycle)
PEメモリのオペランド表記とサイクル番号からPEメモリへの参照を返す
refer_matreg(side, wl)
行列レジスタの面と要素の語長から行列レジスタへの参照を返す
行列レジスタの面はxかyのいずれか
要素の語長はLongWord、ShortWord、HalfWordのいずれか*^1
行列レジスタの詳細は3.6.1.14 x,y-行列レジスタで述べる
get_unit_value(rrn_opcode)
縮約演算指定rrn_opcodeの単位元を返す。
具体的には演算がfadd, iadd, bor, lorならall 0、演算がmax, band, landならall 1、演算がminならその演算精度における符号あり整数の最大値である
*^1 行列レジスタのひとつの面について、書き込みと読み出しで語長指定が一致していない場合は未定義動作である